Ubuntu 16.04
Sponsored Link

OpenStack Mitaka : Add VM-Images
2016/05/20
 
Add Virtual Machine image in Glance.
[1] Load environment variables first.
root@dlp:~#
unset OS_TOKEN OS_URL

root@dlp:~#
vi ~/keystonerc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=adminpassword
export OS_AUTH_URL=http://10.0.0.30:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export PS1='\u@\h \W(keystone)\$ '
root@dlp:~#
chmod 600 ~/keystonerc

root@dlp:~#
source ~/keystonerc

root@dlp ~(keystone)#
echo "source ~/keystonerc " >> ~/.bash_profile
# display status (it's OK if no errors are shown)

root@dlp ~(keystone)#
glance image-list
+----+------+
| ID | Name |
+----+------+
+----+------+
[2] For example, Create a Virtual Machine image of ubuntu 16.04.
# create a directory for disk image

root@dlp ~(keystone)#
mkdir -p /var/kvm/images
# create a disk image

root@dlp ~(keystone)#
qemu-img create -f qcow2 /var/kvm/images/ubuntu1604.img 10G
# install OS

root@dlp ~(keystone)#
virt-install \
--name ubuntu1604 \
--ram 2048 \
--disk path=/var/kvm/images/ubuntu1604.img,format=qcow2 \
--vcpus 2 \
--os-type linux \
--os-variant ubuntu16.04 \
--network network=default \
--graphics none \
--console pty,target_type=serial \
--location 'http://jp.archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/' \
--extra-args 'console=ttyS0,115200n8 serial'
Starting install...    
# installation starts
# after finishing installation, back to KVM Host ans shutdown VM

root@dlp ~(keystone)#
virsh shutdown ubuntu1604
# mount the disk image of the VM

root@dlp ~(keystone)#
guestmount -d ubuntu1604 -i /mnt
# enable getty@ttyS0.service

root@dlp ~(keystone)#
ln -s /mnt/lib/systemd/system/getty@.service /mnt/etc/systemd/system/getty.target.wants/getty@ttyS0.service

# unmount and start

root@dlp ~(keystone)#
umount /mnt

root@dlp ~(keystone)#
virsh start ubuntu1604 --console
# configure some settings for openstack instance on VM

root@ubuntu:~#
apt-get -y install ssh cloud-init linux-virtual pollinate
root@ubuntu:~#
vi /etc/default/grub
# line 11: change like follows

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="
console=tty1 console=ttyS0
"
GRUB_CMDLINE_LINUX=""
# line 35,36: comment out

#
GRUB_TERMINAL=serial
#
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stopp=1"
root@ubuntu:~#
update-grub
root@ubuntu:~#
vi /etc/cloud/cloud.cfg
# near line 13: add (if you'd like to allow SSH password authentication to login)

ssh_pwauth: true
root@ubuntu:~#
vi /etc/network/interfaces
# comment out except loopback interface

# The primary network interface
#
auto ens2
#
iface ens2 inet dhcp
root@ubuntu:~#
systemctl enable serial-getty@ttyS0.service
# shutdown to finish

root@ubuntu:~#
shutdown -h now
[3] Add the virtual machine image to Glance.
root@dlp ~(keystone)#
glance image-create --name "Ubuntu1604" --file /var/kvm/images/ubuntu1604.img --disk-format qcow2 --container-format bare --visibility public

+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | 765d8cab1b830ed53ed8c63e23c433f2     |
| container_format | bare                                 |
| created_at       | 2016-05-20T11:55:33Z                 |
| disk_format      | qcow2                                |
| id               | 6af2b695-b82d-4ba0-b4e4-1855848f61aa |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | Ubuntu1604                           |
| owner            | 61bb62a97e394b8db8f95aa05a678771     |
| protected        | False                                |
| size             | 2034368512                           |
| status           | active                               |
| tags             | []                                   |
| updated_at       | 2016-05-20T11:56:02Z                 |
| virtual_size     | None                                 |
| visibility       | public                               |
+------------------+--------------------------------------+

root@dlp ~(keystone)#
glance image-list

+--------------------------------------+------------+
| ID                                   | Name       |
+--------------------------------------+------------+
| 6af2b695-b82d-4ba0-b4e4-1855848f61aa | Ubuntu1604 |
+--------------------------------------+------------+
[4] By the way, if you got an image from internet, it's OK to simply add it like follows.
root@dlp ~(keystone)#
wget http://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img -P /var/kvm/images
root@dlp ~(keystone)#
glance image-create --name "Ubuntu1604" --file /var/kvm/images/ubuntu-16.04-server-cloudimg-amd64-disk1.img --disk-format qcow2 --container-format bare --visibility public

+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | 29c4d152758268383323b86208105960     |
| container_format | bare                                 |
| created_at       | 2016-05-20T13:23:45Z                 |
| disk_format      | qcow2                                |
| id               | ddb8037e-8648-4b88-b7e6-0b10aba3383d |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | Ubuntu1604                           |
| owner            | 61bb62a97e394b8db8f95aa05a678771     |
| protected        | False                                |
| size             | 303824896                            |
| status           | active                               |
| tags             | []                                   |
| updated_at       | 2016-05-20T13:23:47Z                 |
| virtual_size     | None                                 |
| visibility       | public                               |
+------------------+--------------------------------------+
 
Tweet